const host = {
  name: "host",
  type: "input",
  message: "请输入数据库地址",
  default: "127.0.0.1",
}

const port = {
  name: "port",
  type: "input",
  message: "请输入数据库端口",
  default: "3306",
}

const username = {
  name: "username",
  type: "input",
  message: "请输入用户名称",
  default: "root",
}

const password = {
  name: "password",
  type: "password",
  message: "请输入用户密码",
  default: "123456",
}

const dbName = {
  name: "dbName",
  type: "input",
  message: "请输入数据库名称",
  default: "mox",
}

const tableName = {
  name: "tableName",
  type: "input",
  message: "请输入表名称",
  default: "t_role",
}

const cols = (columns) => {
  return {
    name: "cols",
    type: "checkbox",
    message: "请输入要使用的字段",
    choices: columns.map((col) => JSON.stringify(col)),
    default: columns.map((col) => JSON.stringify(col)),
  }
}

const crud = {
  name: "crud",
  type: "checkbox",
  message: "请输入需要的功能",
  choices: ["C [添加]", "R [查询]", "U [修改]", "D [删除]"],
  default: ["C [添加]", "R [查询]", "U [修改]", "D [删除]"],
}

const queryParams = (columns) => {
  return {
    name: "queryParams",
    type: "checkbox",
    when: (ans) => ans.crud.indexOf("R [查询]") > -1,
    message: "请输入作为查询的条件",
    choices: columns.map((col) => JSON.stringify(col)),
    default: columns.map((col) => JSON.stringify(col)),
  }
}

const moduleName = {
  name: "moduleName",
  type: "input",
  message: "请输入此模块的名称 (用 - 连接)",
  validate: (val) => {
    if (!val || val === '' || val.length === 0) {
      return '模块名不能为空，请重新输入！'
    }
    if (!val.match(/[-]\w/gi)) {
      return '请使用 - 连接，如 hello-world'
    }
    return true
  }
}

module.exports = {
  host,
  port,
  username,
  password,
  dbName,
  tableName,
  cols,
  crud,
  queryParams,
  moduleName,
}
